home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / pibt32s1.arc / GETDOWNL.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1985-10-27  |  6.5 KB  |  190 lines

  1. (*----------------------------------------------------------------------*)
  2. (*        Get_Download_Protocol --- Get File Transfer Protocol          *)
  3. (*----------------------------------------------------------------------*)
  4.  
  5. FUNCTION Get_Download_Protocol : Transfer_Type ;
  6.  
  7. (*----------------------------------------------------------------------*)
  8. (*                                                                      *)
  9. (*     Function:   Get_Download_Protocol                                *)
  10. (*                                                                      *)
  11. (*     Purpose:    Gets file name and transfer protocol for download.   *)
  12. (*                                                                      *)
  13. (*     Calling Sequence:                                                *)
  14. (*                                                                      *)
  15. (*        Transtyp := Get_Download_Protocol: Transfer_Type;             *)
  16. (*                                                                      *)
  17. (*     Remarks:                                                         *)
  18. (*                                                                      *)
  19. (*     Calls:    KeyPressed                                             *)
  20. (*               Async_Send                                             *)
  21. (*               Async_Receive                                          *)
  22. (*                                                                      *)
  23. (*----------------------------------------------------------------------*)
  24.  
  25. VAR
  26.    Transfer_Kind : Transfer_Type;
  27.    Transfer_Menu : Menu_Type;
  28.    I             : INTEGER;
  29.    Pacing_String : STRING[1];
  30.    OK_File_Name  : BOOLEAN;
  31.    Flag          : BOOLEAN;
  32.  
  33. BEGIN (* Get_Download_Protocol *)
  34.  
  35.                                    (* Set up menu for protocol inquiry *)
  36.  
  37.    WITH Transfer_Menu DO
  38.       BEGIN
  39.  
  40.          Menu_Size    := 9;
  41.  
  42.          Menu_Default := ORD( Default_Transfer_Type ) + 1;
  43.          IF Menu_Default > 9 THEN Menu_Default := 1;
  44.  
  45.          Menu_Row     := 4;
  46.          Menu_Column  := 20;
  47.          Menu_Tcolor  := Menu_Text_Color;
  48.          Menu_Bcolor  := BackGround_Color;
  49.          Menu_Fcolor  := Menu_Frame_Color;
  50.          Menu_Width   := 50;
  51.          Menu_Height  := 20;
  52.  
  53.       END;
  54.  
  55.    FOR I := 1 TO 9 DO
  56.       WITH Transfer_Menu.Menu_Entries[I] DO
  57.       BEGIN
  58.          Menu_Item_Row    := I;
  59.          Menu_Item_Column := 2;
  60.          CASE I OF
  61.             1:  Menu_Item_Text := 'a) Ascii';
  62.             2:  Menu_Item_Text := 'b) Xmodem (Checksum)';
  63.             3:  Menu_Item_Text := 'c) Xmodem (CRC)';
  64.             4:  Menu_Item_Text := 'd) Kermit';
  65.             5:  Menu_Item_Text := 'e) Telink';
  66.             6:  Menu_Item_Text := 'f) Modem7 (Checksum)';
  67.             7:  Menu_Item_Text := 'g) Modem7 (CRC)';
  68.             8:  Menu_Item_Text := 'h) Ymodem';
  69.             9:  Menu_Item_Text := 'i) Ymodem (Batch)';
  70.          END (* CASE *);
  71.       END;
  72.                                    (* Get transfer protocol *)
  73.  
  74.    Transfer_Menu.Menu_Title := 'Choose file transfer protocol for download:';
  75.  
  76.    Menu_Display_Choices( Transfer_Menu );
  77.    Transfer_Kind := Transfers[ Menu_Get_Choice( Transfer_Menu ,
  78.                                                 Dont_Erase_Menu ) ];
  79.  
  80.                                    (* New default transfer type is *)
  81.                                    (* selected transfer type       *)
  82.  
  83.    Default_Transfer_Type := Transfer_Kind;
  84.  
  85.                                    (* Get file name to use if not *)
  86.                                    (* batch transfer              *)
  87.    Ok_File_Name := FALSE;
  88.    FileName     := '';
  89.  
  90.    IF Transfer_Kind IN [ Ascii, Xmodem_Chk, Xmodem_Crc, Ymodem ] THEN
  91.       BEGIN
  92.  
  93.          REPEAT
  94.  
  95.             GoToXY( 2 , 11 );
  96.             ClrEol;
  97.  
  98.             WRITE('Filename.Ext ? ');
  99.             READLN(FileName);
  100.  
  101.             ASSIGN(AFile,FileName);
  102.                (*$I- *)
  103.             RESET( AFile );
  104.                (*$I+ *)
  105.  
  106.             IF Int24Result <> 0 THEN
  107.                OK_File_Name := TRUE
  108.             ELSE
  109.                BEGIN
  110.                   OK_File_Name := YesNo( FileName + ' already exists, overwrite? ');
  111.                      (*$I-*)
  112.                   CLOSE( AFile );
  113.                      (*$I+*)
  114.                   GoToXY( 1 , WhereY );
  115.                   ClrEol;
  116.               END;
  117.  
  118.          UNTIL( OK_File_Name );
  119.  
  120.          ASSIGN( AFile, FileName );
  121.                (*$I- *)
  122.          REWRITE( AFile );
  123.                (*$I+ *)
  124.  
  125.          IF Int24Result <> 0 THEN
  126.             BEGIN
  127.                Transfer_Kind := None;
  128.                WRITELN;
  129.                WRITELN('*** Can''t open output file, download cancelled ***');
  130.             END;
  131.  
  132.       END  (* Get file name *);
  133.  
  134.                                    (* Set default delays for Ascii transfers *)
  135.    Char_Delay := 0;
  136.    Line_Delay := 0;
  137.  
  138.    CASE Transfer_Kind OF
  139.  
  140.       Xmodem_Crc,
  141.       Xmodem_Chk  :     (*$I-*)
  142.                      CLOSE( Afile );
  143.                         (*$I+*)
  144.       Telink,
  145.       Ymodem,
  146.       Ymodem_Batch:  BEGIN
  147.                         GoToXY( 2 , 11 );
  148.                         Use_Time_Sent := YesNo(' Stamp file with time/date '+
  149.                                                'provided by host? ');
  150.                      END;
  151.  
  152.       Ascii       :  BEGIN
  153.  
  154.                         GoToXY( 2 , 11 );
  155.                         Ascii_Use_CtrlZ := YesNo(' Does Ctrl-Z mark the '+
  156.                                                  'end of file? ');
  157.  
  158.                         GoToXY( 2 , 12 );
  159.                         Ascii_Show_Text := YesNo(' Display text received? ');
  160.  
  161.                         GoToXY( 2 , 14 );
  162.                         WRITE(' Receiving file ', FileName );
  163.                         ClrEol;
  164.  
  165.                         GoToXY( 2 , 15 );
  166.                         WRITE(' Hit Alt-R to stop transfer.');
  167.                         ClrEol;
  168.  
  169.                         DELAY( Two_Second_Delay );
  170.                            (*$I-*)
  171.                         CLOSE( AFile );
  172.                            (*$I+*)
  173.  
  174.                      END;
  175.  
  176.       ELSE           ;
  177.  
  178.    END (* CASE *);
  179.                                    (* Return transfer protocol type *)
  180.  
  181.    Get_Download_Protocol := Transfer_Kind;
  182.  
  183.    DELAY( Two_Second_Delay );
  184.                                    (* Remove this window            *)
  185.    Restore_Screen( Saved_Screen );
  186.  
  187.    Reset_Global_Colors;
  188.  
  189. END   (* Get_Download_Protocol *);
  190.